The invention relates in general to the field of computerized methods and systems for managing cache memories, in particular in a storage area network (SAN) environment.
A storage area network (SAN) is a dedicated network that provides access to consolidated, block level data storage. Such networks are primarily used to make storage devices (e.g., disk arrays or tape libraries) accessible to servers; so that these devices appear as locally attached to the operating system. A SAN typically has its own network of storage devices, which are generally not accessible through the local area network by other devices. A SAN does not provide file abstraction, only block-level operations. However, file systems built on top of SANs do provide file-level access (see e.g., Wikipedia contributors, ‘Storage area network’, Wikipedia, The Free Encyclopedia, 21 May 2012).
More generally, there are several known environments wherein several, local application servers (i.e., using respective cache memories for serving respective applications), are configured to interact with a shared data storage system, so that they can access data stored on the shared storage pool. How such systems manage cache memory is typically implemented as follows: local cache misses are reported by the local servers to the shared data storage system; the latter provides the missing data, in response; and it further consolidates and uses the cache miss data received for caching/tiering purposes, i.e., data placement purposes.
This, for example, is what done in a SAN environment. Clearly, the shared data storage system plays a central role; it is therefore sometimes referred to as a “central system”.
In a typical SAN environment, multiple application servers are connected to the shared data storage system via a standard block-level access interface (data are typically accessed in fixed size blocks of e.g., 512 to 528 bytes). The shared storage pool is managed by a SAN storage server, such as the IBM DS8000. The SAN storage server often uses large caches to increase system throughput and to reduce access latency, while, at the same time, each application server may use caches as well to increase the application agility in terms of I/O efficiency and to reduce consumption of the SAN server's bandwidth. As it can be realized, the caches at the application servers (also referred to as “local caches” hereafter) and the cache at the SAN storage server operate independently: there is no coordination among them. The same conclusion generally holds for more general system architecture as described above, i.e., wherein local application servers interact with a shared data storage system, to access data stored on the shared storage pool.